package pe.gob.mtpe.renoccsys.mybatis.implementacion;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import pe.gob.mtpe.renoccsys.bean.Departamento;
import pe.gob.mtpe.renoccsys.bean.Distrito;
import pe.gob.mtpe.renoccsys.bean.Provincia;
import pe.gob.mtpe.renoccsys.bean.Regional;
import pe.gob.mtpe.renoccsys.bean.TipempresaC;
import pe.gob.mtpe.renoccsys.bean.TipoDocumentoIdentidad;
import pe.gob.mtpe.renoccsys.bean.TipoVia;
import pe.gob.mtpe.renoccsys.bean.Zonal;
import pe.gob.mtpe.renoccsys.mybatis.comun.MyBatisConnectionFactory;
import pe.gob.mtpe.renoccsys.mybatis.interfase.INTMantenimiento;

public class IMPMantenimiento implements INTMantenimiento {
	
private SqlSessionFactory sqlSessionFactory;
	
	public IMPMantenimiento(){
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}

	@Override
	public List<TipempresaC> listarTipoEmpresa() {
		
	SqlSession session = sqlSessionFactory.openSession();
		
		try {
			List<TipempresaC> lista=new ArrayList<TipempresaC>();	
			
			lista=session.selectList("Mantenimiento.listarTipoEmpresa");
			
			return lista;
		} catch (Exception e) {
			System.out.println("Error en busqueda: "+e.getMessage());
			
		} finally {
			session.close();
		}
		return null;
		
	}

	@Override
	public List<TipoDocumentoIdentidad> listarTipoDocumentoIdentidad() {
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			List<TipoDocumentoIdentidad> lista=new ArrayList<TipoDocumentoIdentidad>();	
			
			lista=session.selectList("Mantenimiento.listarTipoDocumentoIdentidad");
			
			return lista;
		} catch (Exception e) {
			System.out.println("Error en busqueda: "+e.getMessage());
			
		} finally {
			session.close();
		}
		return null;
	}
	
	@Override
	public List<Departamento> listarDepartamento() {

		List<Departamento> lstDepartamento = new ArrayList<Departamento>();

		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstDepartamento =  session.selectList("Mantenimiento.listarDepartamento");
			
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}
		

		return lstDepartamento;
	}

	@Override
	public List<Provincia> listarProvincia(Departamento objDepartamento) {
		List<Provincia> lstProvincia = new ArrayList<Provincia>();
		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstProvincia = session.selectList("Mantenimiento.listarProvincia", objDepartamento);
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}
		

		return lstProvincia;
	}

	@Override
	public List<Distrito> listarDistrito(Provincia objProvincia) {
		List<Distrito> lstDistrito = new ArrayList<Distrito>();
		SqlSession session = sqlSessionFactory.openSession();
	
		
		try{
			lstDistrito = session.selectList("Mantenimiento.listarDistrito", objProvincia);
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}
		

		return lstDistrito;
	}
	
	@Override
	public List<TipoVia> listarTipoVia() {
		List<TipoVia> lstTipoVia = new ArrayList<TipoVia>();
		SqlSession session = sqlSessionFactory.openSession();
			
		
		try{
			lstTipoVia = session.selectList("Mantenimiento.listarTipoVia");
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}

		return lstTipoVia;
	}

	@Override
	public List<TipoDocumentoIdentidad> listarTipoDocumentoIdentidad1() {
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			List<TipoDocumentoIdentidad> lista=new ArrayList<TipoDocumentoIdentidad>();	
			
			lista=session.selectList("Mantenimiento.listarTipoDocumentoIdentidad1");
			
			return lista;
		} catch (Exception e) {
			System.out.println("Error en busqueda: "+e.getMessage());
			
		} finally {
			session.close();
		}
		return null;
	}
	
	@Override
	public List<TipoDocumentoIdentidad> listarTipoDocumentoIdentidad2()throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			List<TipoDocumentoIdentidad> lista=new ArrayList<TipoDocumentoIdentidad>();	
			
			lista=session.selectList("Mantenimiento.listarTipoDocumentoIdentidad2");
			
			return lista;
		} catch (Exception e) {
			System.out.println("Error en busqueda: "+e.getMessage());
			
		} finally {
			session.close();
		}
		return null;
	}

	@Override
	public List<Regional> listarRegional(Departamento objDepartamneto) {
		
		List<Regional> lstRegional = new ArrayList<Regional>();
		SqlSession session = sqlSessionFactory.openSession();
			
		
		try{
			lstRegional = session.selectList("Mantenimiento.listarRegional", objDepartamneto);
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}

		return lstRegional;
		
	}

	@Override
	public List<Zonal> listarZonal(Regional objRegional) {
		
		List<Zonal> lstZonal = new ArrayList<Zonal>();
		SqlSession session = sqlSessionFactory.openSession();
			
		
		try{
			lstZonal = session.selectList("Mantenimiento.listarZonal", objRegional);
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}

		return lstZonal;
	}

	@Override
	public List<Departamento> listarDepartamentoxCodigo(
			Departamento objDepartamento) {
		List<Departamento> lstDepartamento = new ArrayList<Departamento>();

		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstDepartamento =  session.selectList("Mantenimiento.listarDepartamentoxCodigo",objDepartamento);
			
		}catch(Exception ex){
			System.out.println("Error en busqueda: "+ex.getMessage());
		}finally{
			session.close();
		}
		

		return lstDepartamento;
	}

}
